home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / biz / dbase / Aminet2DB.lha / TSV2CSV.rexx < prev   
OS/2 REXX Batch file  |  1998-01-28  |  1KB  |  50 lines

  1. /*
  2.  * TSV2CSV.rexx
  3.  * Converts tab-separated values to comma-separated values.
  4.  * $VER: TSV2CSV.rexx 1.0 (6.12.97)
  5.  * By Deok-Min Yun
  6.  */
  7.  
  8. OPTIONS RESULTS
  9. PARSE ARG filename
  10.  
  11. tab = '09'x
  12.  
  13. IF OPEN('DataFile', filename, 'R') = 1 THEN DO
  14.   IF OPEN('SaveFile', filename||'.CSV', 'W') = 1 THEN DO
  15.     DO FOREVER
  16.       temp = READLN('DataFile')
  17.       IF EOF('DataFile') THEN BREAK
  18.       ptr = 1; quote_used = 0
  19.       temp = TRANSLATE(temp, "'", '"')
  20.       DO WHILE INDEX(temp, tab, ptr) ~= 0
  21.         tab_pos = INDEX(temp, tab, ptr)
  22.         IF (tab_pos ~= 0) THEN DO
  23.           ptr = tab_pos
  24.           IF quote_used = 1 THEN DO
  25.             temp = INSERT('"', temp, ptr)
  26.             quote_used = 0
  27.             ptr = ptr + 1
  28.           END
  29.           comma = INDEX(temp, ',', ptr)
  30.           tab_pos2 = INDEX(temp, tab, ptr + 1)
  31.           IF (tab_pos2 = 0 & comma ~= 0) | (comma ~= 0 & comma < tab_pos2) THEN DO
  32.             quote_used = 1
  33.           END
  34.           temp = OVERLAY(',', temp, ptr)
  35.           IF quote_used = 1 THEN DO 
  36.             temp = INSERT('"', temp, ptr)
  37.             ptr = ptr + 1
  38.           END
  39.         END
  40.       END
  41.       IF quote_used = 1 THEN temp = INSERT('"', temp, LENGTH(temp))
  42.       CALL WRITELN('SaveFile', temp)
  43.     END
  44.     CALL CLOSE('SaveFile')
  45.   END
  46.   ELSE SAY "Couldn't create a new file."
  47.   CALL CLOSE('DataFile')
  48. END
  49. ELSE SAY "Couldn't open original file."
  50.